package com.woniuxy.micromallserver.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

/**
 * @author unreleased
 * @date 2021/1/30 15:34
 * // @EnableWebSocketMessageBroker 此注解表示使用STOMP协议来传输基于消息代理的消息，此时可以在@Controller类中使用@MessageMapping
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    /**
     * configureMessageBroker() 方法：
     * 配置了一个 简单的消息代理，通俗一点讲就是设置消息连接请求的各种规范信息。
     */
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        //定义了一个（或多个）客户端订阅地址的前缀信息，也就是客户端接收服务端发送消息的前缀信息
        registry.enableSimpleBroker("/topic","/user");
    }

    /**
     * registerStompEndpoints() 方法：添加一个服务端点，来接收客户端的连接。将 "/endpointChat" 路径注册为 STOMP 端点。
     * @param registry
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        //该webServer 是对应前端JS连接
        //将此处的withSockJS()去除，就可以通过原生方式连接了，因为soket在浏览器不支持wobsoket请求是会自动切换为http请求轮训方式
        registry.addEndpoint("/webServer").setAllowedOrigins("*");
    }
}
